//
//  BaseSKScene.h
//  shandong_porker
//
//  Created by Developer on 2025-01-08.
//  Copyright © 2025 ShandongPoker. All rights reserved.
//

#import <SpriteKit/SpriteKit.h>

NS_ASSUME_NONNULL_BEGIN

/**
 * SpriteKit场景基类
 * 提供MVVM架构支持和通用功能
 */
@interface BaseSKScene : SKScene

/// 关联的ViewModel（弱引用避免循环引用）
@property (nonatomic, weak, nullable) id viewModel;

/// 是否已经设置完成
@property (nonatomic, assign, readonly) BOOL isSetupComplete;

/**
 * 设置场景
 * 子类重写此方法来设置具体的场景元素
 */
- (void)setupScene;

/**
 * 绑定ViewModel
 * 子类重写此方法来绑定具体的数据
 */
- (void)bindViewModel;

/**
 * 根据ViewModel更新场景
 * 当ViewModel数据变化时调用
 */
- (void)updateWithViewModel;

/**
 * 场景暂停
 */
- (void)pauseScene;

/**
 * 场景恢复
 */
- (void)resumeScene;

/**
 * 添加淡入动画
 * @param node 要添加动画的节点
 * @param duration 动画时长
 */
- (void)addFadeInAnimationToNode:(SKNode *)node duration:(NSTimeInterval)duration;

/**
 * 添加滑入动画
 * @param node 要添加动画的节点
 * @param direction 滑入方向
 * @param duration 动画时长
 */
- (void)addSlideInAnimationToNode:(SKNode *)node 
                        direction:(CGVector)direction 
                         duration:(NSTimeInterval)duration;

@end

NS_ASSUME_NONNULL_END